{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "J20dWYcuo-TV"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "c:\\Users\\liquanbo\\.conda\\envs\\pytorch\\lib\\site-packages\\torchvision\\io\\image.py:13: UserWarning: Failed to load image Python extension: '[WinError 127] 找不到指定的程序。'If you don't plan on using image functionality from `torchvision.io`, you can ignore this warning. Otherwise, there might be something wrong with your environment. Did you have `libjpeg` or `libpng` installed before building `torchvision` from source?\n",
            "  warn(\n"
          ]
        }
      ],
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "\n",
        "# KFold 是一个交叉验证生成器，用于将数据集分成 k 个折叠，其中每个折叠都可以用作验证集\n",
        "from sklearn.model_selection import KFold\n",
        "\n",
        "# OneHotEncoder 是一个预处理工具，用于将分类变量转换为独热编码（one-hot encoding），以便机器学习模型能够处理这些特征\n",
        "from sklearn.preprocessing import OneHotEncoder\n",
        "\n",
        "# ColumnTransformer 是一个工具，用于将不同的预处理步骤应用于数据集的不同列\n",
        "from sklearn.compose import ColumnTransformer\n",
        "\n",
        "# Pipeline 是一个工具，用于将多个数据预处理步骤和模型训练步骤组合成一个单一的流程\n",
        "from sklearn.pipeline import Pipeline\n",
        "\n",
        "# RandomForestRegressor 是一个集成学习模型，用于回归任务，它通过构建多个决策树并取其平均值来提高预测性能\n",
        "from sklearn.ensemble import RandomForestRegressor\n",
        "import matplotlib.pyplot as plt\n",
        "import torch\n",
        "import torch.nn as nn\n",
        "import torch.optim as optim\n",
        "import torch.utils.data as data\n",
        "import torchvision.transforms as transforms\n",
        "import torchvision.datasets as datasets\n",
        "import torchvision.models as models\n",
        "import torchvision.utils as utils\n",
        "import torchvision.models.feature_extraction as feature_extraction\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "SFDZR_6HpHav"
      },
      "outputs": [],
      "source": [
        "data=pd.read_csv(\"chf.csv\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 423
        },
        "id": "Sk90SNyPpK0Y",
        "outputId": "c0bc34b3-0fa7-4bb7-da02-1308b3c68dc3"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>id</th>\n",
              "      <th>author</th>\n",
              "      <th>geometry</th>\n",
              "      <th>pressure [MPa]</th>\n",
              "      <th>mass_flux [kg/m2-s]</th>\n",
              "      <th>x_e_out [-]</th>\n",
              "      <th>D_e [mm]</th>\n",
              "      <th>D_h [mm]</th>\n",
              "      <th>length [mm]</th>\n",
              "      <th>chf_exp [MW/m2]</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.39</td>\n",
              "      <td>5600</td>\n",
              "      <td>-0.1041</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>11.3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.31</td>\n",
              "      <td>6700</td>\n",
              "      <td>-0.0596</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>10.6</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>3</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.33</td>\n",
              "      <td>4300</td>\n",
              "      <td>-0.0395</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>7.3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>4</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.62</td>\n",
              "      <td>6400</td>\n",
              "      <td>-0.1460</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>12.8</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>5</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.64</td>\n",
              "      <td>4700</td>\n",
              "      <td>-0.0849</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>11.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1860</th>\n",
              "      <td>1861</td>\n",
              "      <td>Richenderfer</td>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>1500</td>\n",
              "      <td>-0.0218</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "      <td>9.4</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1861</th>\n",
              "      <td>1862</td>\n",
              "      <td>Richenderfer</td>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>1500</td>\n",
              "      <td>-0.0434</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "      <td>10.4</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1862</th>\n",
              "      <td>1863</td>\n",
              "      <td>Richenderfer</td>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>2000</td>\n",
              "      <td>-0.0109</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "      <td>10.8</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1863</th>\n",
              "      <td>1864</td>\n",
              "      <td>Richenderfer</td>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>2000</td>\n",
              "      <td>-0.0218</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "      <td>10.9</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1864</th>\n",
              "      <td>1865</td>\n",
              "      <td>Richenderfer</td>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>2000</td>\n",
              "      <td>-0.0434</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "      <td>11.5</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>1865 rows × 10 columns</p>\n",
              "</div>"
            ],
            "text/plain": [
              "        id        author geometry  pressure [MPa]  mass_flux [kg/m2-s]  \\\n",
              "0        1       Inasaka     tube            0.39                 5600   \n",
              "1        2       Inasaka     tube            0.31                 6700   \n",
              "2        3       Inasaka     tube            0.33                 4300   \n",
              "3        4       Inasaka     tube            0.62                 6400   \n",
              "4        5       Inasaka     tube            0.64                 4700   \n",
              "...    ...           ...      ...             ...                  ...   \n",
              "1860  1861  Richenderfer    plate            1.01                 1500   \n",
              "1861  1862  Richenderfer    plate            1.01                 1500   \n",
              "1862  1863  Richenderfer    plate            1.01                 2000   \n",
              "1863  1864  Richenderfer    plate            1.01                 2000   \n",
              "1864  1865  Richenderfer    plate            1.01                 2000   \n",
              "\n",
              "      x_e_out [-]  D_e [mm]  D_h [mm]  length [mm]  chf_exp [MW/m2]  \n",
              "0         -0.1041       3.0       3.0          100             11.3  \n",
              "1         -0.0596       3.0       3.0          100             10.6  \n",
              "2         -0.0395       3.0       3.0          100              7.3  \n",
              "3         -0.1460       3.0       3.0          100             12.8  \n",
              "4         -0.0849       3.0       3.0          100             11.0  \n",
              "...           ...       ...       ...          ...              ...  \n",
              "1860      -0.0218      15.0     120.0           10              9.4  \n",
              "1861      -0.0434      15.0     120.0           10             10.4  \n",
              "1862      -0.0109      15.0     120.0           10             10.8  \n",
              "1863      -0.0218      15.0     120.0           10             10.9  \n",
              "1864      -0.0434      15.0     120.0           10             11.5  \n",
              "\n",
              "[1865 rows x 10 columns]"
            ]
          },
          "execution_count": 3,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "data"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "LlOtrqINpMF3",
        "outputId": "aea2fbb6-c8e3-4d79-ca8a-0a5f5b8aba55"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "<class 'pandas.core.frame.DataFrame'>\n",
            "RangeIndex: 1865 entries, 0 to 1864\n",
            "Data columns (total 10 columns):\n",
            " #   Column               Non-Null Count  Dtype  \n",
            "---  ------               --------------  -----  \n",
            " 0   id                   1865 non-null   int64  \n",
            " 1   author               1865 non-null   object \n",
            " 2   geometry             1865 non-null   object \n",
            " 3   pressure [MPa]       1865 non-null   float64\n",
            " 4   mass_flux [kg/m2-s]  1865 non-null   int64  \n",
            " 5   x_e_out [-]          1865 non-null   float64\n",
            " 6   D_e [mm]             1865 non-null   float64\n",
            " 7   D_h [mm]             1865 non-null   float64\n",
            " 8   length [mm]          1865 non-null   int64  \n",
            " 9   chf_exp [MW/m2]      1865 non-null   float64\n",
            "dtypes: float64(5), int64(3), object(2)\n",
            "memory usage: 145.8+ KB\n"
          ]
        }
      ],
      "source": [
        "data.info()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 206
        },
        "id": "DypwU5K4pPp9",
        "outputId": "da74cc30-5c76-4eb4-8d4a-9e96f6d352d1"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"data\",\n  \"rows\": 1865,\n  \"fields\": [\n    {\n      \"column\": \"id\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 538,\n        \"min\": 1,\n        \"max\": 1865,\n        \"num_unique_values\": 1865,\n        \"samples\": [\n          234,\n          531,\n          1222\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"author\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 10,\n        \"samples\": [\n          \"Kossolapov\",\n          \"Peskov\",\n          \"Beus\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"geometry\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 3,\n        \"samples\": [\n          \"tube\",\n          \"annulus\",\n          \"plate\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"pressure [MPa]\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 4.2827151612553935,\n        \"min\": 0.1,\n        \"max\": 20.68,\n        \"num_unique_values\": 114,\n        \"samples\": [\n          8.27,\n          0.64,\n          7.26\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mass_flux [kg/m2-s]\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1656,\n        \"min\": 0,\n        \"max\": 7975,\n        \"num_unique_values\": 578,\n        \"samples\": [\n          7717,\n          336,\n          2776\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"x_e_out [-]\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.11757478611113797,\n        \"min\": -0.8667,\n        \"max\": 0.232,\n        \"num_unique_values\": 1360,\n        \"samples\": [\n          0.1554,\n          0.0375,\n          -0.0383\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"D_e [mm]\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 6.33380710105881,\n        \"min\": 1.0,\n        \"max\": 37.5,\n        \"num_unique_values\": 36,\n        \"samples\": [\n          15.0,\n          9.3,\n          7.8\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"D_h [mm]\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 21.182870195222016,\n        \"min\": 1.0,\n        \"max\": 120.0,\n        \"num_unique_values\": 41,\n        \"samples\": [\n          19.8,\n          9.3,\n          5.7\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"length [mm]\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 726,\n        \"min\": 10,\n        \"max\": 3048,\n        \"num_unique_values\": 54,\n        \"samples\": [\n          432,\n          2743,\n          2591\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"chf_exp [MW/m2]\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1.9855354599215078,\n        \"min\": 0.8,\n        \"max\": 19.3,\n        \"num_unique_values\": 109,\n        \"samples\": [\n          8.1,\n          3.5,\n          11.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe",
              "variable_name": "data"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-20404c4d-5af6-4dbb-aa5f-8c3f500135dd\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>id</th>\n",
              "      <th>author</th>\n",
              "      <th>geometry</th>\n",
              "      <th>pressure [MPa]</th>\n",
              "      <th>mass_flux [kg/m2-s]</th>\n",
              "      <th>x_e_out [-]</th>\n",
              "      <th>D_e [mm]</th>\n",
              "      <th>D_h [mm]</th>\n",
              "      <th>length [mm]</th>\n",
              "      <th>chf_exp [MW/m2]</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.39</td>\n",
              "      <td>5600</td>\n",
              "      <td>-0.1041</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>11.3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.31</td>\n",
              "      <td>6700</td>\n",
              "      <td>-0.0596</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>10.6</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>3</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.33</td>\n",
              "      <td>4300</td>\n",
              "      <td>-0.0395</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>7.3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>4</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.62</td>\n",
              "      <td>6400</td>\n",
              "      <td>-0.1460</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>12.8</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>5</td>\n",
              "      <td>Inasaka</td>\n",
              "      <td>tube</td>\n",
              "      <td>0.64</td>\n",
              "      <td>4700</td>\n",
              "      <td>-0.0849</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "      <td>11.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-20404c4d-5af6-4dbb-aa5f-8c3f500135dd')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-20404c4d-5af6-4dbb-aa5f-8c3f500135dd button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-20404c4d-5af6-4dbb-aa5f-8c3f500135dd');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-ae867d94-70b3-44d2-8ad0-9ce72d72e287\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ae867d94-70b3-44d2-8ad0-9ce72d72e287')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-ae867d94-70b3-44d2-8ad0-9ce72d72e287 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "   id   author geometry  pressure [MPa]  mass_flux [kg/m2-s]  x_e_out [-]  \\\n",
              "0   1  Inasaka     tube            0.39                 5600      -0.1041   \n",
              "1   2  Inasaka     tube            0.31                 6700      -0.0596   \n",
              "2   3  Inasaka     tube            0.33                 4300      -0.0395   \n",
              "3   4  Inasaka     tube            0.62                 6400      -0.1460   \n",
              "4   5  Inasaka     tube            0.64                 4700      -0.0849   \n",
              "\n",
              "   D_e [mm]  D_h [mm]  length [mm]  chf_exp [MW/m2]  \n",
              "0       3.0       3.0          100             11.3  \n",
              "1       3.0       3.0          100             10.6  \n",
              "2       3.0       3.0          100              7.3  \n",
              "3       3.0       3.0          100             12.8  \n",
              "4       3.0       3.0          100             11.0  "
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "data.head(5)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {},
      "outputs": [],
      "source": [
        "def preprocessing(df):\n",
        "    df = df.copy()  # 复制 DataFrame 以避免修改原始数据\n",
        "    df = df.drop(['id', 'author'], axis=1)  # 删除 'id' 和 'author' 列\n",
        "    # 分离目标变量和特征\n",
        "    y = df['chf_exp [MW/m2]']  # 目标变量\n",
        "    x = df.drop(['chf_exp [MW/m2]'], axis=1)  # 特征\n",
        "\n",
        "    return x, y  # 返回特征和目标变量"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "id": "l3T3RUJZpWfu"
      },
      "outputs": [],
      "source": [
        "X,y=preprocessing(data)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 423
        },
        "id": "af4zCzZYpaUu",
        "outputId": "7c5e6770-8135-400a-f9ce-c7c115881947"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>geometry</th>\n",
              "      <th>pressure [MPa]</th>\n",
              "      <th>mass_flux [kg/m2-s]</th>\n",
              "      <th>x_e_out [-]</th>\n",
              "      <th>D_e [mm]</th>\n",
              "      <th>D_h [mm]</th>\n",
              "      <th>length [mm]</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>tube</td>\n",
              "      <td>0.39</td>\n",
              "      <td>5600</td>\n",
              "      <td>-0.1041</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>tube</td>\n",
              "      <td>0.31</td>\n",
              "      <td>6700</td>\n",
              "      <td>-0.0596</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>tube</td>\n",
              "      <td>0.33</td>\n",
              "      <td>4300</td>\n",
              "      <td>-0.0395</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>tube</td>\n",
              "      <td>0.62</td>\n",
              "      <td>6400</td>\n",
              "      <td>-0.1460</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>tube</td>\n",
              "      <td>0.64</td>\n",
              "      <td>4700</td>\n",
              "      <td>-0.0849</td>\n",
              "      <td>3.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1860</th>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>1500</td>\n",
              "      <td>-0.0218</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1861</th>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>1500</td>\n",
              "      <td>-0.0434</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1862</th>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>2000</td>\n",
              "      <td>-0.0109</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1863</th>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>2000</td>\n",
              "      <td>-0.0218</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1864</th>\n",
              "      <td>plate</td>\n",
              "      <td>1.01</td>\n",
              "      <td>2000</td>\n",
              "      <td>-0.0434</td>\n",
              "      <td>15.0</td>\n",
              "      <td>120.0</td>\n",
              "      <td>10</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>1865 rows × 7 columns</p>\n",
              "</div>"
            ],
            "text/plain": [
              "     geometry  pressure [MPa]  mass_flux [kg/m2-s]  x_e_out [-]  D_e [mm]  \\\n",
              "0        tube            0.39                 5600      -0.1041       3.0   \n",
              "1        tube            0.31                 6700      -0.0596       3.0   \n",
              "2        tube            0.33                 4300      -0.0395       3.0   \n",
              "3        tube            0.62                 6400      -0.1460       3.0   \n",
              "4        tube            0.64                 4700      -0.0849       3.0   \n",
              "...       ...             ...                  ...          ...       ...   \n",
              "1860    plate            1.01                 1500      -0.0218      15.0   \n",
              "1861    plate            1.01                 1500      -0.0434      15.0   \n",
              "1862    plate            1.01                 2000      -0.0109      15.0   \n",
              "1863    plate            1.01                 2000      -0.0218      15.0   \n",
              "1864    plate            1.01                 2000      -0.0434      15.0   \n",
              "\n",
              "      D_h [mm]  length [mm]  \n",
              "0          3.0          100  \n",
              "1          3.0          100  \n",
              "2          3.0          100  \n",
              "3          3.0          100  \n",
              "4          3.0          100  \n",
              "...        ...          ...  \n",
              "1860     120.0           10  \n",
              "1861     120.0           10  \n",
              "1862     120.0           10  \n",
              "1863     120.0           10  \n",
              "1864     120.0           10  \n",
              "\n",
              "[1865 rows x 7 columns]"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "X"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "id": "-g2t0Ol6pbYl"
      },
      "outputs": [],
      "source": [
        "def build_model():\n",
        "    # 创建一个 Pipeline 用于处理名义特征\n",
        "    nominal_transformer = Pipeline(steps=[\n",
        "        ('onehot', OneHotEncoder(sparse_output=False, handle_unknown='ignore'))  # 使用 OneHotEncoder 对名义特征进行编码\n",
        "    ])\n",
        "\n",
        "    # 创建一个 ColumnTransformer 用于预处理数据\n",
        "    preprocessor = ColumnTransformer(transformers=[\n",
        "        ('nominal', nominal_transformer, ['geometry'])  # 对 'geometry' 列应用名义特征转换器\n",
        "    ], remainder='passthrough')  # 保留其余列不变\n",
        "\n",
        "    # 创建一个 Pipeline 用于模型构建\n",
        "    model = Pipeline(steps=[\n",
        "        ('preprocessor', preprocessor),  # 应用预处理器\n",
        "        ('regressor', RandomForestRegressor(random_state=1))  # 使用随机森林回归器作为模型\n",
        "    ])\n",
        "\n",
        "    return model  # 返回构建好的模型"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "metadata": {
        "id": "27pXuoojpiIx"
      },
      "outputs": [],
      "source": [
        "kf = KFold(n_splits=5)\n",
        "\n",
        "rmses = []\n",
        "\n",
        "for train_idx, test_idx in kf.split(X):\n",
        "\n",
        "    X_train = X.iloc[train_idx, :]\n",
        "    X_test = X.iloc[test_idx, :]\n",
        "    y_train = y.iloc[train_idx]\n",
        "    y_test = y.iloc[test_idx]\n",
        "\n",
        "    model = build_model()\n",
        "    model.fit(X_train, y_train)\n",
        "\n",
        "    y_pred = model.predict(X_test)\n",
        "\n",
        "    rmse = np.sqrt(np.mean((y_test - y_pred)**2))\n",
        "\n",
        "    rmses.append(rmse)\n",
        "\n",
        "final_rmse = np.mean(rmses)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "C_Iz3gKlplW5",
        "outputId": "2cbecfa1-a49b-4ad8-896c-5b89e303028d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "RMSE: 1.27\n"
          ]
        }
      ],
      "source": [
        "print(\"RMSE: {:.2f}\".format(final_rmse))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 335
        },
        "id": "IF-oq0-9qOJt",
        "outputId": "0e38c7f7-5c95-490d-80e5-04fe82bccecc"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "count    373.000000\n",
              "mean       5.291421\n",
              "std        2.155833\n",
              "min        0.900000\n",
              "25%        4.100000\n",
              "50%        5.000000\n",
              "75%        6.000000\n",
              "max       19.300000\n",
              "Name: chf_exp [MW/m2], dtype: float64"
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# describe 函数用于生成数据的基本统计信息，包括计数、均值、标准差、最小值、25%分位数、中位数、75%分位数和最大值。\n",
        "y_test.describe()\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 448
        },
        "id": "2LiQoFz0qRss",
        "outputId": "daa4bb87-ac4c-444c-e3a7-42743946b564"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<AxesSubplot: ylabel='Frequency'>"
            ]
          },
          "execution_count": 17,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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mKibb7453FkAAADCLqSys3Tp0nDnAAAAaBEhrdmRpJMnT+rtt9/Wc889p+PHj0uSDh8+rNra2rCFAwAAaK6QruwcOHBAgwYN0sGDB9XQ0KB//dd/VXx8vObNm6eGhgaVlJSEOycAAEBIQrqyM2XKFPXt21fffvut4uLiAuM333yzSktLwxYOAACguUK6svPuu+/qgw8+UExMTNB4p06d9PXXX4clGAAAQDiEdGXH7/erqanptPFDhw4pPj6+2aEAAADCJaSyc+ONN2rhwoWBxw6HQ7W1tfrzn//MT0gAAICIElLZefzxx/X+++/ryiuvVH19vf7whz8EPsKaN29e2MI1NTVp1qxZysrKUlxcnC677DI99NBDQd/cbFmWZs+erbS0NMXFxSk3N1d79+4NWwYAANC2hbRm59JLL9VHH32kV155RR9//LFqa2tVUFCg/Pz8oAXLzTVv3jwtXrxYL730krp166adO3dq3Lhxcrlcmjx5siRp/vz5WrRokV566SVlZWVp1qxZysvL06effqr27duHLQsAAGibQio7kuR0OjV69OhwZjnNBx98oGHDhmnIkCGSvl8A/fLLL2v79u2Svr+qs3DhQj344IMaNmyYJGn58uVKTU3VmjVrNGrUqDPO29DQoIaGhsBjn8/Xoq8DAADYJ6Sys3z58nPuv/3220MK80PXXXedlixZoj179ujyyy/XRx99pPfee08LFiyQJO3fv18ej0e5ubmB57hcLmVnZ6usrOysZae4uFhz5swJS0YAABDZQio7U6ZMCXrc2NioEydOKCYmRhdddFHYys7MmTPl8/nUpUsXtWvXTk1NTXrkkUeUn58vSfJ4PJKk1NTUoOelpqYG9p1JUVGRCgsLA499Pp8yMjLCkhkAAESWkMrOt99+e9rY3r17dffdd2v69OnNDnXKq6++qhUrVmjlypXq1q2bdu3apalTpyo9PV1jx44Ned7Y2FjFxsaGLScAAIhcIa/Z+aHOnTtr7ty5Gj16tD7//POwzDl9+nTNnDkz8HFUjx49dODAARUXF2vs2LFyu92SpOrqaqWlpQWeV11drV69eoUlAwAAaNtC/iHQM3E6nTp8+HDY5jtx4oSiooIjtmvXTn6/X5KUlZUlt9sd9BMVPp9P27ZtU05OTthyAACAtiukKzuvv/560GPLsnTkyBE9/fTT6tevX1iCSdLQoUP1yCOPKDMzU926ddOHH36oBQsWaPz48ZK+/zLDqVOn6uGHH1bnzp0Dt56np6dr+PDhYcsBAADarpDKzg+LhMPh0M9//nPdcMMNevzxx8ORS5L01FNPadasWbrnnntUU1Oj9PR0/fGPf9Ts2bMDxzzwwAOqq6vThAkTdOzYMfXv31/r16/nO3YAAIAkyWH9368jvkD5fD65XC55vV4lJCTYHcd2nWauszvCBeOruUPsjgAAbdb5vn+Hdc0OAABApAnpY6z/+x01P+bUFwACAADYIaSy8+GHH+rDDz9UY2OjrrjiCknSnj171K5dO1199dWB4xwOR3hStmF8JAQAgL1CKjtDhw5VfHy8XnrpJV188cWSvv+iwXHjxulXv/qV7rvvvrCGBAAACFVIa3Yef/xxFRcXB4qOJF188cV6+OGHw3o3FgAAQHOFVHZ8Pp+++eab08a/+eYbHT9+vNmhAAAAwiWksnPzzTdr3Lhxeu2113To0CEdOnRI//Vf/6WCggKNGDEi3BkBAABCFtKanZKSEt1///36wx/+oMbGxu8ncjpVUFCgxx57LKwBAQAAmiOksnPRRRfp2Wef1WOPPaYvvvhCknTZZZepQ4cOYQ0HAADQXM36UsEjR47oyJEj6ty5szp06CC+jBkAAESakMrO//zP/2jgwIG6/PLLNXjwYB05ckSSVFBQwG3nAAAgooRUdqZNm6bo6GgdPHhQF110UWD897//vdavXx+2cAAAAM0V0pqdv//973rrrbd06aWXBo137txZBw4cCEswAACAcAjpyk5dXV3QFZ1Tjh49qtjY2GaHAgAACJeQys6vfvUrLV++PPDY4XDI7/dr/vz5GjBgQNjCAQAANFdIH2PNnz9fAwcO1M6dO/Xdd9/pgQce0CeffKKjR4/q/fffD3dGAACAkIV0Zad79+7as2eP+vfvr2HDhqmurk4jRozQhx9+qMsuuyzcGQEAAEL2k6/sNDY2atCgQSopKdGf/vSnlsgEAAAQNj/5yk50dLQ+/vjjlsgCAAAQdiF9jDV69Gi98MIL4c4CAAAQdiEtUD558qRefPFFvf322+rTp89pv4m1YMGCsIQDAABorp9Udr788kt16tRJu3fv1tVXXy1J2rNnT9AxDocjfOkAAACa6SeVnc6dO+vIkSPatGmTpO9/HmLRokVKTU1tkXAAAADN9ZPW7PzwV83ffPNN1dXVhTUQAABAOIW0QPmUH5YfAACASPOTyo7D4ThtTQ5rdAAAQCT7SWt2LMvSHXfcEfixz/r6et11112n3Y312muvhS8hAABAM/yksjN27Nigx6NHjw5rGAAAgHD7SWVn6dKlLZUDAACgRTRrgTIAAECko+wAAACjUXYAAIDRKDsAAMBolB0AAGA0yg4AADBaxJedr7/+WqNHj1ZycrLi4uLUo0cP7dy5M7DfsizNnj1baWlpiouLU25urvbu3WtjYgAAEEkiuux8++236tevn6Kjo/Xmm2/q008/1eOPP66LL744cMz8+fO1aNEilZSUaNu2berQoYPy8vJUX19vY3IAABApftKXCra2efPmKSMjI+jLDLOysgL/27IsLVy4UA8++KCGDRsmSVq+fLlSU1O1Zs0ajRo16ozzNjQ0qKGhIfDY5/O10CsAAAB2i+grO6+//rr69u2r3/3ud0pJSVHv3r31/PPPB/bv379fHo9Hubm5gTGXy6Xs7GyVlZWddd7i4mK5XK7AlpGR0aKvAwAA2Ceiy86XX36pxYsXq3Pnznrrrbd09913a/LkyXrppZckSR6PR5KUmpoa9LzU1NTAvjMpKiqS1+sNbFVVVS33IgAAgK0i+mMsv9+vvn376tFHH5Uk9e7dW7t371ZJSclpP0r6U8TGxgZ+uR0AAJgtoq/spKWl6corrwwa69q1qw4ePChJcrvdkqTq6uqgY6qrqwP7AADAhS2iy06/fv1UWVkZNLZnzx517NhR0veLld1ut0pLSwP7fT6ftm3bppycnFbNCgAAIlNEf4w1bdo0XXfddXr00Ud16623avv27VqyZImWLFkiSXI4HJo6daoefvhhde7cWVlZWZo1a5bS09M1fPhwe8MDAICIENFl55prrtHq1atVVFSkf//3f1dWVpYWLlyo/Pz8wDEPPPCA6urqNGHCBB07dkz9+/fX+vXr1b59exuTAwCASOGwLMuyO4TdfD6fXC6XvF6vEhISwjp3p5nrwjofzPLV3CF2RwCANut8378jes0OAABAc1F2AACA0Sg7AADAaJQdAABgNMoOAAAwGmUHAAAYjbIDAACMRtkBAABGo+wAAACjUXYAAIDRKDsAAMBolB0AAGA0yg4AADAaZQcAABiNsgMAAIxG2QEAAEaj7AAAAKNRdgAAgNEoOwAAwGiUHQAAYDTKDgAAMBplBwAAGI2yAwAAjEbZAQAARqPsAAAAo1F2AACA0Sg7AADAaJQdAABgNMoOAAAwGmUHAAAYjbIDAACMRtkBAABGo+wAAACjUXYAAIDR2lTZmTt3rhwOh6ZOnRoYq6+v18SJE5WcnKyf/exnGjlypKqrq+0LCQAAIkqbKTs7duzQc889p6uuuipofNq0aXrjjTe0atUqbd68WYcPH9aIESNsSgkAACJNmyg7tbW1ys/P1/PPP6+LL744MO71evXCCy9owYIFuuGGG9SnTx8tXbpUH3zwgbZu3WpjYgAAECnaRNmZOHGihgwZotzc3KDx8vJyNTY2Bo136dJFmZmZKisrO+t8DQ0N8vl8QRsAADCT0+4AP+aVV15RRUWFduzYcdo+j8ejmJgYJSYmBo2npqbK4/Gcdc7i4mLNmTMn3FEBAEAEiugrO1VVVZoyZYpWrFih9u3bh23eoqIieb3ewFZVVRW2uQEAQGSJ6LJTXl6umpoaXX311XI6nXI6ndq8ebMWLVokp9Op1NRUfffddzp27FjQ86qrq+V2u886b2xsrBISEoI2AABgpoj+GGvgwIH6xz/+ETQ2btw4denSRTNmzFBGRoaio6NVWlqqkSNHSpIqKyt18OBB5eTk2BEZAABEmIguO/Hx8erevXvQWIcOHZScnBwYLygoUGFhoZKSkpSQkKB7771XOTk5uvbaa+2IDAAAIkxEl53z8cQTTygqKkojR45UQ0OD8vLy9Oyzz9odCwAARAiHZVmW3SHs5vP55HK55PV6w75+p9PMdWGdD2b5au4QuyMAQJt1vu/fEb1AGQAAoLkoOwAAwGiUHQAAYDTKDgAAMBplBwAAGI2yAwAAjEbZAQAARqPsAAAAo1F2AACA0Sg7AADAaJQdAABgNMoOAAAwGmUHAAAYjbIDAACMRtkBAABGo+wAAACjUXYAAIDRKDsAAMBolB0AAGA0yg4AADAaZQcAABiNsgMAAIxG2QEAAEaj7AAAAKNRdgAAgNEoOwAAwGiUHQAAYDTKDgAAMBplBwAAGI2yAwAAjEbZAQAARqPsAAAAo1F2AACA0Sg7AADAaJQdAABgtIgvO8XFxbrmmmsUHx+vlJQUDR8+XJWVlUHH1NfXa+LEiUpOTtbPfvYzjRw5UtXV1TYlBgAAkSTiy87mzZs1ceJEbd26VRs2bFBjY6NuvPFG1dXVBY6ZNm2a3njjDa1atUqbN2/W4cOHNWLECBtTAwCASOG0O8CPWb9+fdDjZcuWKSUlReXl5fr1r38tr9erF154QStXrtQNN9wgSVq6dKm6du2qrVu36tprr7UjNgAAiBARf2Xnh7xeryQpKSlJklReXq7Gxkbl5uYGjunSpYsyMzNVVlZ2xjkaGhrk8/mCNgAAYKY2VXb8fr+mTp2qfv36qXv37pIkj8ejmJgYJSYmBh2bmpoqj8dzxnmKi4vlcrkCW0ZGRktHBwAANmlTZWfixInavXu3XnnllWbNU1RUJK/XG9iqqqrClBAAAESaiF+zc8qkSZO0du1abdmyRZdeemlg3O1267vvvtOxY8eCru5UV1fL7Xafca7Y2FjFxsa2dGQAABABIv7KjmVZmjRpklavXq2NGzcqKysraH+fPn0UHR2t0tLSwFhlZaUOHjyonJyc1o4LAAAiTMRf2Zk4caJWrlypv/3tb4qPjw+sw3G5XIqLi5PL5VJBQYEKCwuVlJSkhIQE3XvvvcrJyeFOLAAAEPllZ/HixZKk66+/Pmh86dKluuOOOyRJTzzxhKKiojRy5Eg1NDQoLy9Pzz77bCsnBQAAkchhWZZldwi7+Xw+uVwueb1eJSQkhHXuTjPXhXU+wG5fzR1idwQAkHT+798Rv2YHAACgOSg7AADAaJQdAABgNMoOAAAwGmUHAAAYjbIDAACMRtkBAABGo+wAAACjUXYAAIDRKDsAAMBolB0AAGA0yg4AADAaZQcAABiNsgMAAIxG2QEAAEaj7AAAAKNRdgAAgNEoOwAAwGiUHQAAYDTKDgAAMJrT7gAA2pZOM9fZHeEn+2ruELsjALARV3YAAIDRuLIDwHhcjQIubFzZAQAARqPsAAAAo1F2AACA0Sg7AADAaJQdAABgNMoOAAAwGmUHAAAYjbIDAACMxpcKAkAEaotfhNgW8eWNFwau7AAAAKNRdgAAgNEoOwAAwGjGlJ1nnnlGnTp1Uvv27ZWdna3t27fbHQkAAEQAIxYo//Wvf1VhYaFKSkqUnZ2thQsXKi8vT5WVlUpJSbE7HgAgQrEQvHXYvRDciLKzYMEC3XnnnRo3bpwkqaSkROvWrdOLL76omTNnnnZ8Q0ODGhoaAo+9Xq8kyefzhT2bv+FE2OcEAKAtaYn31/87r2VZ5zyuzZed7777TuXl5SoqKgqMRUVFKTc3V2VlZWd8TnFxsebMmXPaeEZGRovlBADgQuVa2LLzHz9+XC6X66z723zZ+e///m81NTUpNTU1aDw1NVWff/75GZ9TVFSkwsLCwGO/36+jR48qOTlZDoejRfPayefzKSMjQ1VVVUpISLA7jm04D5wDiXNwCueBcyC13XNgWZaOHz+u9PT0cx7X5stOKGJjYxUbGxs0lpiYaE8YGyQkJLSpv8wthfPAOZA4B6dwHjgHUts8B+e6onNKm78b65JLLlG7du1UXV0dNF5dXS23221TKgAAECnafNmJiYlRnz59VFpaGhjz+/0qLS1VTk6OjckAAEAkMOJjrMLCQo0dO1Z9+/bVL3/5Sy1cuFB1dXWBu7PwvdjYWP35z38+7SO8Cw3ngXMgcQ5O4TxwDiTzz4HD+rH7tdqIp59+Wo899pg8Ho969eqlRYsWKTs72+5YAADAZsaUHQAAgDNp82t2AAAAzoWyAwAAjEbZAQAARqPsAAAAo1F2LgDFxcW65pprFB8fr5SUFA0fPlyVlZV2x7LV3Llz5XA4NHXqVLujtLqvv/5ao0ePVnJysuLi4tSjRw/t3LnT7litpqmpSbNmzVJWVpbi4uJ02WWX6aGHHvrRHxJsy7Zs2aKhQ4cqPT1dDodDa9asCdpvWZZmz56ttLQ0xcXFKTc3V3v37rUnbAs613lobGzUjBkz1KNHD3Xo0EHp6em6/fbbdfjwYfsCt4Af+7vwf911111yOBxauHBhq+VrKZSdC8DmzZs1ceJEbd26VRs2bFBjY6NuvPFG1dXV2R3NFjt27NBzzz2nq666yu4ore7bb79Vv379FB0drTfffFOffvqpHn/8cV188cV2R2s18+bN0+LFi/X000/rs88+07x58zR//nw99dRTdkdrMXV1derZs6eeeeaZM+6fP3++Fi1apJKSEm3btk0dOnRQXl6e6uvrWzlpyzrXeThx4oQqKio0a9YsVVRU6LXXXlNlZaV++9vf2pC05fzY34VTVq9era1bt/7ob061GRYuODU1NZYka/PmzXZHaXXHjx+3OnfubG3YsMH6l3/5F2vKlCl2R2pVM2bMsPr37293DFsNGTLEGj9+fNDYiBEjrPz8fJsStS5J1urVqwOP/X6/5Xa7rcceeywwduzYMSs2NtZ6+eWXbUjYOn54Hs5k+/btliTrwIEDrROqlZ3tHBw6dMj6p3/6J2v37t1Wx44drSeeeKLVs4UbV3YuQF6vV5KUlJRkc5LWN3HiRA0ZMkS5ubl2R7HF66+/rr59++p3v/udUlJS1Lt3bz3//PN2x2pV1113nUpLS7Vnzx5J0kcffaT33ntPN910k83J7LF//355PJ6g/0+4XC5lZ2errKzMxmT283q9cjgcF9QPRfv9fo0ZM0bTp09Xt27d7I4TNkb8XATOn9/v19SpU9WvXz91797d7jit6pVXXlFFRYV27NhhdxTbfPnll1q8eLEKCwv1//7f/9OOHTs0efJkxcTEaOzYsXbHaxUzZ86Uz+dTly5d1K5dOzU1NemRRx5Rfn6+3dFs4fF4JEmpqalB46mpqYF9F6L6+nrNmDFDt912W5v7FfDmmDdvnpxOpyZPnmx3lLCi7FxgJk6cqN27d+u9996zO0qrqqqq0pQpU7Rhwwa1b9/e7ji28fv96tu3rx599FFJUu/evbV7926VlJRcMGXn1Vdf1YoVK7Ry5Up169ZNu3bt0tSpU5Wenn7BnAOcW2Njo2699VZZlqXFixfbHafVlJeX68knn1RFRYUcDofdccKKj7EuIJMmTdLatWu1adMmXXrppXbHaVXl5eWqqanR1VdfLafTKafTqc2bN2vRokVyOp1qamqyO2KrSEtL05VXXhk01rVrVx08eNCmRK1v+vTpmjlzpkaNGqUePXpozJgxmjZtmoqLi+2OZgu32y1Jqq6uDhqvrq4O7LuQnCo6Bw4c0IYNGy6oqzrvvvuuampqlJmZGfh38sCBA7rvvvvUqVMnu+M1C1d2LgCWZenee+/V6tWr9c477ygrK8vuSK1u4MCB+sc//hE0Nm7cOHXp0kUzZsxQu3btbErWuvr163fa1w7s2bNHHTt2tClR6ztx4oSiooL/O69du3by+/02JbJXVlaW3G63SktL1atXL0mSz+fTtm3bdPfdd9sbrpWdKjp79+7Vpk2blJycbHekVjVmzJjT1jPm5eVpzJgxGjdunE2pwoOycwGYOHGiVq5cqb/97W+Kj48PfA7vcrkUFxdnc7rWER8ff9oapQ4dOig5OfmCWrs0bdo0XXfddXr00Ud16623avv27VqyZImWLFlid7RWM3ToUD3yyCPKzMxUt27d9OGHH2rBggUaP3683dFaTG1trfbt2xd4vH//fu3atUtJSUnKzMzU1KlT9fDDD6tz587KysrSrFmzlJ6eruHDh9sXugWc6zykpaXplltuUUVFhdauXaumpqbAv5VJSUmKiYmxK3ZY/djfhR8WvOjoaLndbl1xxRWtHTW87L4dDC1P0hm3pUuX2h3NVhfireeWZVlvvPGG1b17dys2Ntbq0qWLtWTJErsjtSqfz2dNmTLFyszMtNq3b2/98z//s/WnP/3JamhosDtai9m0adMZ/w0YO3asZVnf334+a9YsKzU11YqNjbUGDhxoVVZW2hu6BZzrPOzfv/+s/1Zu2rTJ7uhh82N/F37IlFvPHZZl8NeGAgCACx4LlAEAgNEoOwAAwGiUHQAAYDTKDgAAMBplBwAAGI2yAwAAjEbZAQAARqPsAAAAo1F2AACA0Sg7AADAaJQdAABgtP8PJcyhqULe0yMAAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "y_test.plot(kind='hist')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "6MEx7ZQJqauR"
      },
      "outputs": [],
      "source": [
        "!jupyter nbconvert --to html /content/Assignment2_BT21MEC078.ipynb\n"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.9.18"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
